#include <stdio.h>
double sum(double a,int mark){   //计算总价格函数
    double sum=0;
    sum=a*mark;
    return sum;
}
struct Menu{      //菜单
    int id;
    char menu_name[50];
    double price;
    int like;
};
struct OrderForm{     //点餐信息
    char name[50];
    int of_id;
    int mark;
    int time;
    char address[100];
    double sum;
    int state;
};
struct Menu menu[10]={   //定制菜单
        {1 ,"黄焖鸡" , 15.00 , 0},
        {2 ,"青椒炒肉" , 16.00 , 0},
        {3 ,"蛋炒饭" , 10.00 , 0},
        {4 ,"红烧肉" , 20.00 , 0}
};
struct OrderForm orderForm[5];
int main() {
    int num =0;
    while (1){
        int select;//定义选择按钮
        //输出主界面
        printf("****************************\n");
        fflush(stdout);
        printf("1.我要点餐\n");
        fflush(stdout);
        printf("2.查看餐袋\n");
        fflush(stdout);
        printf("3.签收订单\n");
        fflush(stdout);
        printf("4.删除订单\n");
        fflush(stdout);
        printf("5.我要点赞\n");
        fflush(stdout);
        printf("6.退出系统\n");
        fflush(stdout);
        printf("****************************\n");
        fflush(stdout);
        scanf("%d",&select);//输入选择
        switch(select){
            case 1:
            if(num>1)//每天限制多少单
            {
                printf("今日订单到上线了\n");
                fflush(stdout);
                continue;
            }
                printf("***我要定餐***\n请输入定餐人姓名：");
                fflush(stdout);
                scanf("%s",orderForm[num].name);
                //显示菜单
                printf("序号   菜名   单价   点赞数\n");
                for (int i = 0; i < 4; ++i) {

                    printf("%d     %s    %lf    %d\n",menu[i].id,menu[i].menu_name,menu[i].price,menu[i].like);
                    fflush(stdout);
                }
                    int out;//定义退出入口
                    printf("你要点的餐是：");
                    fflush(stdout);
                    scanf("%d", &orderForm[num].of_id);//点的餐的序号
                if (orderForm[num].of_id < 1 || orderForm[num].of_id > 4)
                {
                    printf("无效的餐品序号\n");
                    continue;
                }
                    printf("你需要的份数是：");
                    fflush(stdout);
                    scanf("%d",&orderForm[num].mark);//点的餐的份数
                    while (1) {
                        printf("送餐时间是（10 点到 20 点）：");fflush(stdout);
                        scanf("%d", &orderForm[num].time);
                        if (orderForm[num].time >= 10 && orderForm[num].time <= 20) {
                            break;
                        } else {
                            printf("输入的送餐时间无效，请输入 10 到 20 之间的整数。\n");fflush(stdout);
                            while (getchar() != '\n'); // 清除输入缓冲区
                        }
                    }
                    printf("请输入送餐地点是：");
                    fflush(stdout);
                    scanf("%99s",orderForm[num].address);
                    printf("订单成功！\n");
                    fflush(stdout);
                    //输出你的订单信息
                    printf("您订购的是菜单中的名字是:%s   %d份！\n",menu[orderForm[num].of_id].menu_name,orderForm[num].mark);
                    fflush(stdout);
                    printf("送餐时间是%d时！\n",orderForm[num].time);
                    fflush(stdout);
                    //sum (总价，总价加运送费）
                    printf("餐费：%lf元，送餐费5元 总计%lf\n",sum(menu[orderForm[num].of_id-1].price,orderForm[num].mark),
                           (sum(menu[orderForm[num].of_id].price,orderForm[num].mark)+5));
                    fflush(stdout);
                orderForm[num].sum= (sum(menu[orderForm[num].of_id].price,orderForm[num].mark)+5);
                num++;
                printf("输入0返回: ");//退出case 1
                fflush(stdout);
                scanf("%d",&out);
                if(out==0)
                    break;
                else
                {
                    printf("输入0返回啊！");
                    continue;
                }

            case 2:
                printf("***查看餐袋***\n");
                fflush(stdout);
                printf("序号   定餐人   餐品信息   送餐时间   送餐地址   总金额\t订单状态\n");
                for (int i = 0; i < num; ++i) {
                    printf("%d     %s      %s %d    %d       %s\t%lf"
                           ,i,orderForm[i].name,menu[orderForm[i].of_id].menu_name,orderForm->mark,
                           orderForm[i].time,orderForm[i].address,orderForm[i].sum);
                    fflush(stdout);
                    if(orderForm[i].state==1){
                        printf("已完成\n");
                        fflush(stdout);
                    }
                    else{
                        printf("已预定\n");
                        fflush(stdout);
                    }
                }
                printf("输入0返回:");
                fflush(stdout);
                scanf("%d",&out);
                if(out==0)
                    break;
            case 3:
            {
                // 签收订单
                printf("请输入要签收的订单序号：");
                fflush(stdout);
                int index;
                scanf("%d", &index);
                if (index >= 0 && index < num) {
                    orderForm[index].state = 1;
                    printf("订单已签收\n");
                    fflush(stdout);
                } else {
                    printf("无效的订单序号\n");
                    fflush(stdout);
                }
                break;
        }
            case 4:// 删除订单
            {
                printf("请输入要删除的订单序号：");
                fflush(stdout);
                int index;
                scanf("%d", &index);
                if (index >= 0 && index < num) {
                    for (int i = index; i < num - 1; ++i) {
                        orderForm[i] = orderForm[i + 1];
                    }
                    num--;
                    printf("订单已删除\n");
                    fflush(stdout);
                } else {
                    printf("无效的订单序号\n");
                    fflush(stdout);
                }
                break;
            }

            case 5:// 点赞功能
            {
                printf("请输入要点赞的餐品序号：");
                fflush(stdout);
                int index;
                scanf("%d", &index);
                if (index >= 1 && index <= 4) {
                    menu[index - 1].like++;
                    printf("点赞成功！%s 的点赞数：%d\n", menu[index - 1].menu_name, menu[index - 1].like);
                    fflush(stdout);
                } else {
                    printf("无效的餐品序号\n");
                    fflush(stdout);
                }
                break;
            }

            case 6:{
                printf("退出程序 886\n");
                fflush(stdout);
                return 0;
            }
            default: {
                printf("请重新输入\n");
                fflush(stdout);
                break;
            }
        }

    }
    return 0;
}

